Skip to main content

KTN-07

FieldIsi
Dokumen IDKTN-07
DeskripsiPurchase Request untuk Kurnia Tani: permintaan pembelian dari cabang / department, persetujuan per barang, penguncian dokumen, dan pembuatan Purchase Order dari PR yang disetujui
Nomor Revisi1
Tanggal2026-10-04
KeteranganFitur baru Purchase Request (termasuk buat PO dari PR)

1. Ringkasan​

a. In scope​

  • User melihat daftar Purchase Request (tanggal, nomor invoice, lokasi, cabang, department, status Selesai / Perlu Approval).
  • User memfilter daftar berdasarkan tanggal, lokasi, cabang, dan department.
  • User membuat Purchase Request dengan cabang, lokasi, department, dan baris barang (barang, SKU, satuan, qty, keterangan).
  • User menyimpan PR sebagai draft (perlu approval) atau final.
  • User melihat detail Purchase Request.
  • User mengunci, membuka kunci, dan menghapus Purchase Request sesuai status dokumen.
  • Approver menyetujui atau menolak tiap barang PR beserta qty yang disetujui.
  • User membuat Purchase Order atas PR yang memiliki barang disetujui.

b. Catatan​

c. Kesimpulan​

  • [FE] Buat halaman daftar Purchase Request (filter, status, aksi)
  • [FE] Buat halaman create Purchase Request
  • [FE] Buat halaman detail Purchase Request beserta aksi approval, hapus, lock / unlock, dan buat PO dari PR
  • [FE] Tambah opsi buat PO dari PR pada alur Purchase Order
  • [FE] Aktifkan menu Purchase Request di navigasi brand
  • [BE] Buat endpoint create Purchase Request
  • [BE] Buat endpoint list dan detail invoice Purchase Request
  • [BE] Buat endpoint lock, unlock, dan delete Purchase Request
  • [BE] Buat endpoint update approval per barang Purchase Request
  • [BE] Buat endpoint create Purchase Order dari Purchase Request

2. Functional Requirement​

KodeDeskripsi
FR-01Sistem menampilkan daftar PR dengan department, cabang, lokasi, dan status
FR-02User dapat memfilter daftar PR
FR-03User dapat membuat PR dengan rincian barang
FR-04User dapat menyimpan PR sebagai draft atau final
FR-05User dapat melihat detail PR
FR-06User dapat mengunci PR agar tidak dapat diubah
FR-07User dapat membuka kunci PR yang terkunci
FR-08User dapat menghapus PR yang masih diizinkan dihapus
FR-09Approver dapat menyetujui / menolak barang PR dengan qty disetujui
FR-10User dapat membuat PO atas PR yang memiliki barang disetujui

3. Use Case List​

KodeDeskripsi
UC-01Melihat daftar purchase request
UC-02Memfilter daftar purchase request
UC-03Membuat purchase request
UC-04Melihat detail purchase request
UC-05Mengunci purchase request
UC-06Membuka kunci purchase request
UC-07Menghapus purchase request
UC-08Menyetujui atau menolak barang purchase request
UC-09Membuat purchase order atas purchase request

4. Use Case Scenario​

UC-01 : Melihat daftar purchase request​

AktorUser dengan hak Purchase Request
DeskripsiUser melihat daftar PR
PrekondisiUser sudah login
Brand aktif
Alur utama1. User membuka menu Purchase Request.
2. Sistem menampilkan daftar PR dengan department, cabang, lokasi, dan status.
3. User klik baris untuk membuka detail.
Alur negatif- Jika daftar kosong tanpa filter, muncul "Daftar Invoice masih kosong".
- Jika daftar kosong dengan filter, muncul "Invoice Tidak Ditemukan".
- Jika user tanpa hak akses, menu / halaman tidak dapat dibuka.
Bisnis rule- User tanpa hak melihat semua PR hanya melihat PR miliknya.
- Kolom lokasi hanya tampil jika brand memiliki fitur lokasi.
- Status: Selesai jika sudah final, Perlu Approval jika belum.
PostkondisiDaftar PR tampil
TriggerUser membuka halaman Purchase Request
Kode FRFR-01

UC-02 : Memfilter daftar purchase request​

AktorUser dengan hak Purchase Request
DeskripsiUser mempersempit daftar PR
PrekondisiUser berada di halaman daftar
Alur utama1. User mencari nomor invoice.
2. User membuka Filter dan mengisi tanggal, lokasi, cabang, dan/atau department.
3. Sistem memuat ulang daftar.
Alur negatif- Jika tidak ada data, muncul "Invoice Tidak Ditemukan".
- Reset mengosongkan filter.
Bisnis rule- Filter lokasi hanya tampil jika brand memiliki fitur lokasi.
PostkondisiDaftar terfilter
TriggerUser mengubah filter
Kode FRFR-02

UC-03 : Membuat purchase request​

AktorUser dengan hak tambah Purchase Request
DeskripsiUser mengajukan permintaan pembelian barang
PrekondisiUser sudah login
Brand aktif
Barang terdaftar di master barang
Alur utama1. User klik Buat Invoice.
2. User mengisi tanggal, cabang, lokasi, dan department.
3. User menambah baris barang (barang, satuan, qty, keterangan).
4. User memilih Simpan Draft atau Simpan Final, lalu mengonfirmasi.
5. Sistem menyimpan PR dan menampilkan "Berhasil buat Purchase Request".
Alur negatif- Jika form belum lengkap, muncul "Tolong lengkapi form dengan benar!".
- Jika rincian belum lengkap, muncul "Tolong lengkapi rincian dengan benar!".
- Jika cabang kosong, muncul peringatan lengkapi gudang / cabang.
- Jika gagal menyimpan, PR tidak tersimpan dan muncul pesan error.
Bisnis rule- Cabang per baris dipakai bila brand multi gudang.
- Draft berstatus Perlu Approval; final berstatus Selesai sesuai aturan simpan yang dipilih.
PostkondisiPR tersimpan
TriggerUser klik Simpan
Kode FRFR-03
FR-04

UC-04 : Melihat detail purchase request​

AktorUser dengan hak lihat Purchase Request
DeskripsiUser melihat informasi dan barang PR
PrekondisiPR tersedia
Alur utama1. User klik PR di daftar atau memilih Lihat.
2. Sistem menampilkan informasi nota dan daftar barang dengan status approval.
Alur negatif- Jika PR tidak ditemukan, detail tidak tampil dan muncul pesan error.
Bisnis rule- Menu tindakan pada detail menyesuaikan status: Approval PR, Lock / Unlock, Hapus, Buat PO Atas PR.
PostkondisiDetail PR tampil
TriggerUser membuka detail PR
Kode FRFR-05

UC-05 : Mengunci purchase request​

AktorUser dengan hak lock Purchase Request
DeskripsiUser mengunci PR agar tidak dapat diubah
PrekondisiPR tersedia dan masih dapat dikunci
Alur utama1. User memilih Lock pada PR.
2. Sistem mengunci dokumen PR.
3. Sistem menampilkan konfirmasi berhasil.
Alur negatif- Jika PR sudah terkunci, aksi lock ditolak.
- Jika gagal mengunci, muncul pesan error dan status PR tidak berubah.
Bisnis rule- PR terkunci tidak dapat diubah isinya.
- Hapus hanya diizinkan sesuai aturan status (umumnya PR yang belum final / belum diproses lanjut).
PostkondisiPR terkunci
TriggerUser klik Lock
Kode FRFR-06

UC-06 : Membuka kunci purchase request​

AktorUser dengan hak unlock Purchase Request
DeskripsiUser membuka kunci PR agar dapat diubah kembali
PrekondisiPR dalam status terkunci
Alur utama1. User memilih Unlock pada PR.
2. Sistem membuka kunci dokumen PR.
3. Sistem menampilkan konfirmasi berhasil.
Alur negatif- Jika PR tidak terkunci, aksi unlock ditolak.
- Jika PR sudah diproses menjadi PO / tidak boleh dibuka, aksi ditolak.
- Jika gagal unlock, muncul pesan error.
Bisnis rule- Unlock mengembalikan PR ke kondisi dapat diubah sesuai aturan status.
- Unlock tidak menghapus data approval yang sudah ada kecuali aturan bisnis memutuskan sebaliknya.
PostkondisiKunci PR terbuka
TriggerUser klik Unlock
Kode FRFR-07

UC-07 : Menghapus purchase request​

AktorUser dengan hak hapus Purchase Request
DeskripsiUser menghapus PR yang masih diizinkan dihapus
PrekondisiPR tersedia dan status mengizinkan hapus
Alur utama1. User memilih Hapus pada PR.
2. Sistem menampilkan konfirmasi hapus.
3. User mengonfirmasi.
4. Sistem menghapus PR dan memperbarui daftar.
Alur negatif- Jika user membatalkan konfirmasi, PR tidak dihapus.
- Jika PR sudah final / terkunci / sudah punya PO, hapus ditolak.
- Jika gagal menghapus, muncul pesan error.
Bisnis rule- Hapus hanya untuk PR yang belum diproses lanjut menjadi PO.
- Setelah terhapus, PR tidak lagi tampil di daftar.
PostkondisiPR terhapus
TriggerUser klik Hapus
Kode FRFR-08

UC-08 : Menyetujui atau menolak barang purchase request​

AktorApprover dengan hak approval Purchase Request
DeskripsiApprover memutuskan tiap barang PR disetujui atau ditolak
PrekondisiPR berstatus belum selesai dan belum final
Alur utama1. Approver memilih Approval PR.
2. Sistem menampilkan barang dengan qty requested.
3. Approver memilih Approve / Decline per barang atau sekaligus, dan mengisi qty approved.
4. Approver klik Simpan.
5. Sistem menyimpan approval dan menampilkan "Berhasil Buat Approval".
Alur negatif- Jika qty approved melebihi qty requested, muncul "Qty tidak boleh lebih dari qty requested ...".
- Jika qty approved 0 untuk barang disetujui, muncul "Qty harus lebih dari 0".
- Jika masih ada barang pending, muncul "Masih ada barang yang belum di-approve atau di-decline".
- Jika gagal, muncul "Gagal Buat Approval".
Bisnis rule- Status approval barang: pending, approved, declined.
- Barang declined memiliki qty approved 0.
- Approve tanpa qty memakai qty requested.
- Setelah approval selesai, PR menjadi Selesai (final).
PostkondisiStatus approval barang tersimpan
TriggerApprover klik Simpan pada modal approval
Kode FRFR-09

UC-09 : Membuat purchase order atas purchase request​

AktorUser dengan hak buat Purchase Order
DeskripsiUser memproses PR yang disetujui menjadi PO
PrekondisiPR final, status belum selesai, dan minimal satu barang approved
Alur utama1. User memilih Buat PO Atas PR dari daftar atau detail PR (atau opsi buat PO dari PR di halaman PO).
2. Sistem membuka form PO dengan PR terpilih.
3. Sistem mengisi cabang, lokasi, dan barang dari PR.
4. User memilih supplier, melengkapi harga, lalu menyimpan PO final.
5. Sistem membuat PO yang terhubung ke PR.
Alur negatif- Jika PR tidak ditemukan, muncul "Invoice PR yang anda cari tidak ditemukan!".
- Jika tidak ada barang approved, opsi buat PO tidak tersedia / proses ditolak.
- Validasi PO lainnya mengikuti pembuatan PO.
Bisnis rule- Hanya barang approved dengan qty approved > 0 yang masuk ke PO.
- Baris yang sudah terikat PO tidak diikutkan lagi.
- Setiap baris PO membawa id baris PR dan id invoice PR.
- PO final dari PR memakai jalur create PO dengan PR.
PostkondisiPO terbentuk dari PR
TriggerUser klik Buat PO Atas PR
Kode FRFR-10

5. Data Flow Diagram​

DFD-01 — Alur purchase request ke purchase order​

6. Sequence Diagram​

SD-01 — UC-01 : Melihat daftar purchase request​

SD-02 — UC-02 : Memfilter daftar purchase request​

SD-03 — UC-03 : Membuat purchase request​

SD-04 — UC-04 : Melihat detail purchase request​

SD-05 — UC-05 : Mengunci purchase request​

SD-06 — UC-06 : Membuka kunci purchase request​

SD-07 — UC-07 : Menghapus purchase request​

SD-08 — UC-08 : Menyetujui atau menolak barang purchase request​

SD-09 — UC-09 : Membuat purchase order atas purchase request​

7. Table Schema​

8. API Schema​

EndpointStatusPerubahan
GET /invoice-purchase-requestnewList invoice PR + pagination + filter
GET /invoice-purchase-request/:idnewDetail invoice PR beserta baris barang
POST /purchase-requestnewCreate Purchase Request (header + rincian)
PUT /invoice-purchase-request/:idnewUpdate invoice PR
POST /invoice-purchase-request/:id/locknewMengunci PR
POST /invoice-purchase-request/:id/unlocknewMembuka kunci PR
DELETE /invoice-purchase-request/:idnewMenghapus invoice PR
POST /purchase-request/update-approvalnewApprove / decline barang PR + qty approved
POST /invoice-purchase-order/with-prnewCreate Purchase Order dari Purchase Request